Are you a Java developer looking to add advanced hardware I/O capabilities to your Android or PC application? Well then the IOIO-OTG is for you! The IOIO-OTG (pronounced “yo-yo-O-T-G”) is a development board specially designed to do just that. It features a PIC microcontroller which acts like a bridge that connects an app on your PC or Android device to low-level peripherals like GPIO, PWM, ADC, I2C, SPI, and UART. An app-level library helps you write control code for these low level peripherals in the same way you'd write any other Java app!
What separates the IOIO-OTG from previous IOIO boards is the ability to leverage the USB On-The-Go specification to connect as a host *or *an accessory. There are several ways to connect the IOIO to your Java app. If the app is running on your Android device, the IOIO-OTG will act as a USB host and supply charging current to your device (meaning the IOIO-OTG will need its own power source). If your app is running on a Windows, Linux or OSX machine, the IOIO-OTG will assume device mode and present itself as a virtual serial port. When in device mode, the IOIO-OTG can be powered by the host! Connecting a USB Bluetooth dongle will cause the IOIO-OTG to show up as a Bluetooth serial connection so you can go wireless!
A switch on the board can be used to force the IOIO-OTG into host mode, but most of the time the board can be left in 'auto' mode and it will detect its role in the connection. We're now shipping the IOIO-OTG board loaded with the V4.00 bootloader and the V3.30 application firmware. New application firmware is frequently released, and can be upgraded without needing a programmer using the IOIODude application.
The board includes a JST connector for attaching a barrel jack to JST connector and there are several pin headers broken out for voltage and ground access. A trimpot on the board allows you to adjust the charge current used when the IOIO-OTG is acting as a host. A USB-A to micro-A OTG cable is included which will let you connect your android device to the micro-USB port on the board using the cable that came with your android device.
Note: Please do not power your IOIO-OTG with 10V over longer wires. This may cause your board to fail.
Note: This product is a collaboration with Ytai Ben-Tsvi. A portion of each sales goes back to him for product support and continued development.
Replaces:DEV-10748
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Rookie - The number of pins increases, and you will have to determine polarity of components and some of the components might be a bit trickier or close together. You might need solder wick or flux.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Experienced - You will require a firm understanding of programming, the programming toolchain, and may have to make decisions on programming software or language. You may need to decipher a proprietary or specialized communication protocol. A logic analyzer might be necessary.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Noob - You don't need to reference a datasheet, but you will need to know basic power requirements.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 1 ratings:
0 of 1 found this helpful:
If you have Android 4.2+ on your device, you need to disable usb debugging in order for the celphone to recognize the ioio board.
-------------------- Tech Support Tips/Troubleshooting/Common Issues --------------------
Android Mode Not Displaying in Processing
If you are having problems with getting Android Mode installed on Processing follow these directions:
Make sure that you have the Android Mode installed in the correct directory. You just need to unzip the attached file https://dl.dropboxusercontent.com/u/5898761/AndroidMode.zip that was explained from the Processing forums => http://forum.processing.org/two/discussion/comment/25645#Comment_25645 in the correct folder. This includes the Android Mode folder for both Windows and Mac OS X. You need to go to your documents folder and place the AndroidMode folder for your operating system into the Processing\modes directory. On my computer with a Windows 7 64-bit OS this is how it looks like:
Also, make sure that you have the correct configuration as stated in Step 2 - Configuring the Android SDK => https://github.com/sparkfun/SIKIO/wiki/Detailed-Software-Installation#step-2---configuring-the-android-sdk for the Android SDK. Step 2 should have been done before.
Re-open Processing, click on the drop down menu on the top right where it says “Java” and click on the “add mode” and install the Android Mode. You must direct it to the Android SDK folder wherever it is installed on your computer.
Buck Regulator Circuit Design
The designer of the board Ytai sent out a message to the IOIO users group https://groups.google.com/forum/#!searchin/ioio-users/frying/ioio-users/BOHxOMThwWw/ccV4mYwWhhcJ about the step down buck regulator frying issues. This is what he told the group and I last:
The new version of the IOIO fixes the issues. Try looking at this blog post for more information on the updates and fixes => [ https://www.sparkfun.com/news/2069 ].
That's a pretty common problem with motor controller input wires...solution is an electrolytic cap on the input, which due to high ESR absorbs the spike. To be honest I'm not entirely sure how that works, because I would think a low ESR cap would be more helpful [though it is actually the root of the problem]...but it does.
This looks fun
Any forecast to have it back in stock?
Can this board recieve serial signal and pass it to Android?
Sorry but where is the 3D file. Can't see it in Github Repo for such product number?
We have been changing the GitHub repository for our 3D models to accommodate standard extension files. It currently doesn't look like the new model has been made for this product. It should have been under the product name "11343." I can make a request to make a 3D model by our mechanical engineer but I'm not sure when it will be created. It is dependent on his queue. If you would still like to receive a 3D model for this, please contact us at techsupport@sparkfun.com
This is a great board, any chance it will make it into the Eagle libraries? If not I am willing to make my own footprint and share it.
I wish I could post a review. There I would give 2 reviews.
First, a 3 star rating for instruction, tips, issues and working with android, and various platforms. This is the biggest hurdle for the product as the diversity of manufacturers of tablets and phones, with the various installed versions of android. There are online resources/blogs that provide help/clues, and they are your best resource if you experience trouble. Issues are predominatly with the USB connection under circumstances when 1) running application, building the APK, and installing on device. 2) using a hard wire to connect. Best tactic I have found to get around my issues was removing the cable and attaching a USB Bluetooth dongle. Second, a 5+, hands down rating for the instruction manual, and links. Once one is past the connectivity issues between the IOIO and the android device, the manual, with the clear illustrations and the the "scan and go" approach to downloading the application, is Fantastic! Don't get frustrated or feel bad if you encountered issues, many folks have been there. Be tenacious, look to the Internet for help and clues, and have fun learning!
Love these boards, however I've lost 3 of them due to the micro-USB connector coming off. Is there any way you can secure the connector better so I don't have to epoxy them before they break?
Dumb question: If this is programmed by Java, is it possible to control via common android development platforms, like Xamarin? I am a C# guy, but I would love to add this to some of my Xamarin/Android projects that I deploy to my android phone. Does anyone know of an API to control this via Xamarin/Android/Monoandroid?
Any estimate on when you guys will have these back in stock?
Hopefully in the next week. Looks like we have all the parts in stock to build it up, it's just a matter of getting through the higher rated priority builds.
Are they any circuit diagrams for using the IOIO to drive the Magician Chassis?
The OTG comes with a micro USB to female A, the short cable shown in the product photo. You connect this cable to the IOIO-OTG and then use a normal micro USB cable to connect it to your phone.
Hi everyone, I just installed the last version of the application on my phone (HTC One, Android 4.3). There was no error in eclipse, the application is installed correctly and looks how it should look, the board is powered correctly (power led on and phone charging when plugged and USB debugging activated) BUT when I press the ON/OFF button for the stat led nothing happens.
I tried that with two different boards, so the problem does not come from the board... Any idea ?
Try turning USB Debugging OFF
I have a question about recharging the LiPo battery. If I have the board either connected by USB as a device (to a PC) or plugged in using a phone charger and also have it connected to a LiPo battery through the JST port, will the LiPo charge? Or will the LiPo need to be disconnected and charged with a seperate charger?
The LiPo will have to be charged with a separate charger.
It says that on windows the IOIO shows up as a virtual serial port. What data rate does this serial port have?
Hi, I got a IOIO-OTG can not be found via Bluetooth dongle, moving the "force host" (H) position and turnning current-limiting potentiometer to fully clockwise can not make it work too. But the same dongle can work with the IOIO V1 to be connected by blue-tooth. Anyone encountered same problem?
Is there a known issue with the regulator failing on these boards? I've had two out of five fail after only a few weeks of operation. It appears the TPS62133RGTT step down DC-DC converter has failed on both. They are all powered by commercial switching power supplies from a very well known distributor. I have scoped them and they have clean 12 VDC power well below the 17 V limit.
I've now had three fail. I discovered that a 7805 linear regulator has the same pinout and can be soldered into the power pins near the USB port to get the board back in service. I don't see a post from Sparkfun, however they have confirmed to me that there is an issue and the TPS62133RGTT regulators are blowing up due to a design flaw on this board.
same issue here.
Yes (person that's above me).
You can always push the reply button.....
Is it possible to program this to have a output screen? Like to view files that is shared over Bluetooth.
Hello folks! In my project I need to raise "1" at a digital out pin for a certain number of msecs (1000s of msecs) with a +-1ms accuracy. Please correct me if I'm wrong, but as far as I understand: 1) I can't program IOIO itself to do this for me internally, and 2) by setting/clearing pins from an Android application I will not be even close to the desired accuracy (because of the Android's and the USB interface's latencies). Am i right?
I'm not 100% sure about your specific application, but in theory you can do it for up to 500ms. Open a PWM output with a 1Hz frequency and set the pulse width to 500ms. Within 500ms you have enough time to disable the PWM so you reach the precision you need.
Your datasheet for the PIC24FJ256 is only an Errata sheet, not a true datasheet. Please update this.
Ah, good catch. Getting that updated now. Thanks!
Is it possible to run the IOIO as a USB device when connected to an Android device running as the USB host? I'd like to be able to connect the IOIO to the Android device through a hub, so that I can connect multiple USB devices to the Android. I don't think this is supported, but I'd like to double check. Thanks!
I would like to know the same thing. The name IOIO-OTG would imply to me that it works with an OTG cable which would imply that it works with Android OTG supported devices not requiring any external power, however, everything that I read contradicts these assumptions. The name should be "IOIO-Open Accessory-Mode-Only-When Connected-To-Android" or IOIO-OAMOWCTA for short, not IOIO-OTG if OTG isn't supported to an Android device. I want a micro-controller that I can use with an Android device through a USB hub, and hubs aren't supported in accessory mode.
Can I get an IOIO without the JST power connector?
Please don't stop making the IOIO board with the bigger USB connector. Not a lot of USB BlueTooth dongle that work with this USB connector.
The IOIO OTG Board could support Android V2.3.3 SONY X10i phone?
Can someone please change the description above to state the board has a JST-PH connector. Not a JST connector. Now send me an adapter while your at it.
Yes I completely agree - would it be too hard to add this "not so common" connector to the "so common" usb otg cable that comes with package? I got package after 1month, and now I am still looking for that power connector - please give us precise description (product code) what power connector we need!
I remember previous IOIO had a compatible phones list. Does it apply to this version as well?
In addition to what Toni said, if your phone is not on the list, it doesn't mean the board won't work. Any Android with either a USB device or host connector should work.
Check the Wiki. There is list of tested phones on there, along with which IOIO bootloader and IOIO firmware versions they have been tested with.
After one hour continuous operation, is the 5-15V input damaged. The IOIO works now only with 5V supply at the 5V output pin. I've used it with a 12V power supply...
Contact techsupport@sparkfun.com and we will get it figured out.
Okay, I see that this version has a micro USB connection - fine. How the heck am I supposed to easily connect this to my cell phone? Which also has a micro USB connection? (For the previous versions of IOIO this was obvious .- clearly there is a reason for the change) Sure, one could additionally use a male USB to micro USB cable - but this is starting to get bulky / ungainly. Can one get a short micro to micro cable?
And what's best practice for developing? With the cable from the Android to the PC - do you have to remove the cable to the PC and plug it into the IOIO to run? That way of course you can't debug using eclipse - crazy. (For example, if you plugged in a bluetooth adapter on the IOIO perhaps you could remain plugged into the PC and keep debugging?)
For development or prototyping, I use a rooted device so if that is your case, then on the Android just install adbWireless, available from the Android market.
https://play.google.com/store/apps/details?id=siir.es.adbWireless&hl=en
From within eclipse, install the AdbConnect plugin by choosing 'Help->Install New Software...' and select the site http://ppareit.github.com/AdbConnect/ as update site.
That is it. You not longer need a cable for debugging. Enjoy!
I use bluetooth. Use the usb cable for the eclipse-phone connection and bluetooh for the phone-ioio connection.
Has anyone managed to connect it to OSX 10.8? /dev/tty.usb simply doesn't show up, and the IOIO wiki specifically say that no drivers are needed for mac.
Never mind, apparently whether or not the IOIO enters a device or host mode depends on the USB cable used. With the right cable it shows and functions as expected.
Will this charge its battery if the battery is connected to the JST PH jack? I want to put it inside the case of a 4-dollar sound player named the Funtronics Phone.
Got my IOIO-OTG working over USB with my Android tablet (HP Touchpad running CM9) and Processing for Android, thanks to this tutorial (http://benatwork.cc/how-to-use-processing-in-android-mode-with-the-ioio-board/). I can't get it to connect over my Bluetooth dongle, however (http://plugable.com/products/usb-bt4le). Is there something I'm missing, or is this dongle just not compatible?
BTW, I am both powering and connecting to the Android device/Bluetooth dongle through a USB-OTG Y cable.
I too have gone through that tutorial only to find Bluetooth connections not working. Working out that kink led me to coding up a IOIO Processing library of my own (check out https://github.com/PinkHatSpike/pioio).
Before you go any further though, you should confirm your Bluetooth dongle works with your setup first. The App-IOIO330 download should have a HelloIOIO.apk you can load onto your phone to do just that. BLE may be a little ahead of IOIO support, but I'm hoping it works out. Let me know what happens.
I wanted something like this and finally i found it. This will help me in making a Drone. I am so much excited
So this thing HAS to run in host mode to work with an android device over USB, or can it function the same way if it is treated as a slave to the android device?
It all depends on what you are connecting the IOIO to. Some devices are USB hosts, some are devices. The OTG spec means the IOIO can act as either. Currently, most Android phones are devices, so yes, the IOIO must run as a host when connected to any device, but more and more androids are incorporating the OTG spec, so this could change.
Oh I'm sorry i should have been more specific. I was thinking devices that don't have a dedicated host USB port. Although in my situation, having the IOIO as the host device is necessary. I want to use it in an automotive application where a tablet replaces my head unit. Therefore i need it to be able to charge AND interface with the board at the same time, which for the tablet i have, charging and OTG cannot work at the same time. I was just curious if it could work either way. Thanks for clarifying.
Wonderful, I just received 10748 today :( When was this new version made available?
I think today. I just received two on Wednesday. I've been blowing them up fairly often recently. There's not much protection on the power input on the older model.
Schematic link does not work (at least for me)
So I can not connect it to a phone and power it by the phone? :/
I'm afraid the protocol that the IOIO uses to communicate with the phone treats the IOIO as a host so the phone can't provide power out. Sorry about that!
Are you sure that the IOIO doesn't support Host Negotiation Protocol?
yeah, just one of the necessary evils of acting as a host.
unless you have a phone capable of host mode, though those aren't incredibly common at this point. Android tablet devices are a safer bet if you want to go that route.